/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.smart.hawk.model.caller;

import co.com.smart.connection.model.manager.JDBCResourceManager;
import co.com.smart.hawk.dto.CiudadDTO;
import co.com.smart.hawk.dto.DepartamentoDTO;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Carlos Enaldo Ramos Hoyos
 * @fecha: 03/02/2017
 */
public class CiudadesCaller extends JDBCResourceManager{
    
    public CiudadesCaller(){
        super();
    }
     
    public List<CiudadDTO> listarCiudades(CiudadDTO ciudad) throws Throwable{
        ArrayList<CiudadDTO> listCiudad = new ArrayList<>();
        
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        
        String sql = "select A.sm_scciudad, A.sm_cociudad, "
                    +"A.sm_dsciudad, A.sm_scdepartamento, "
                    +"A.sm_cousuario, A.sm_fhingreso, "
                    +"A.sm_fhmodificacion, A.sm_fhretiro "
                    +"from smart_ciudad as A "
                    +"     inner join smart_departamento B on A.sm_scdepartamento = B.sm_scdepartamento "
                    +"where B.sm_codepartamento = ?";
        
        try{
            conn = getConnection();
            pst = conn.prepareStatement(sql);
            pst.setString(1, ciudad.getDepartamento().getCodepartamento());
            rs = pst.executeQuery();
            
            if(rs!=null){
                while(rs.next()){
                    CiudadDTO ciudadDTO = new CiudadDTO();
                    DepartamentoDTO departamentoDTO  = new DepartamentoDTO();
                    ciudadDTO.setScciudad(rs.getBigDecimal("sm_scciudad"));
                    ciudadDTO.setCociudad(rs.getString("sm_cociudad"));
                    ciudadDTO.setDsciudad(rs.getString("sm_dsciudad"));
                    departamentoDTO.setScdepartamento(rs.getBigDecimal("sm_scdepartamento"));
                    ciudadDTO.setDepartamento(departamentoDTO);
                    listCiudad.add(ciudadDTO);
                }
            }            
        }catch(SQLException sqle){
            throw sqle;
        }finally{
            closeResources(conn, pst, rs);
        }
        return listCiudad;
    }
}
